﻿using BancoSim.Entidades.Entidades;
using BancoSim.Entidades.Logica;
using BancoSim.Utils.Clases;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace BancoSim.Ventanas_Modales
{
    /// <summary>
    /// Lógica de interacción para cwAgregarProceso.xaml
    /// </summary>
    public partial class cwAgregarProceso : Window
    {
        clServicio sevicioListar = new clServicio();
        clGrupo grupoListar = new clGrupo();
        Proceso proceso = new Proceso();
        string nombGrupoFiltar;
        public cwAgregarProceso(string pNombreGrupo)
        {
            InitializeComponent();
            gdServicio.DataContext = new clServicio();
            nombGrupoFiltar = pNombreGrupo;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            ListarGrupos();
        }

        void ListarServicios()
        {
            try
            {
                clServicio servicioFiltro = new clServicio();

                servicioFiltro.CodGrupo = grupoListar.CodGrupo;

                blServicio blServicio = new blServicio();

                ObservableCollection<clServicio> listaServicios = new ObservableCollection<clServicio>();
                listaServicios = blServicio.ListarServicios(servicioFiltro);
                if (listaServicios != null)
                {
                    clServicioComboBox.IsEnabled = true;
                    gdServicio.DataContext = listaServicios;
                }
                else
                {
                    clServicioComboBox.IsEnabled = false;
                    gdServicio.DataContext = null;
                 //   MessageBox.Show("Sin datos");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        void ListarGrupos()
        {
            try
            {
                clGrupo grupoFiltro = new clGrupo();
                blGrupo blGrupo = new blGrupo();

                grupoFiltro.NombreGrupo = nombGrupoFiltar;

                ObservableCollection<clGrupo> listaGrupos = new ObservableCollection<clGrupo>();
                listaGrupos = blGrupo.ListarGrupos(grupoFiltro);
                if (listaGrupos != null)
                {
                    clServicioComboBox.SelectedIndex = 0;
                    grupoListar = listaGrupos[0];
                    this.Title += " a " + grupoListar.NombreGrupo;
                    ListarServicios();
                }
                else
                {
                    MessageBox.Show("Sin datos");
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            DialogResult = true;
            Close();
        }

        public Proceso ProcRegistrado()
        {
            try
            {
                if (camposCompletos())
                {

                    bool pE = ckbPeticionE.IsChecked == true ? true : false;
                    string nombre = clServicioComboBox.Text;
                    int peso = (Convert.ToInt32(txbMinutos.Text) * 60000) + (Convert.ToInt32(txbSegundos.Text) * 1000) + Convert.ToInt32(txbMiliSegundos.Text);
                    int prioridad = int.Parse(cbxPrioridad.Text);

                    return new Proceso(peso, nombre, pE, prioridad);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("No puedes ingresar letras en el campo del tiempo.");
            }
          return null;
        }

        bool camposCompletos()
        {
          if(txbSegundos.Text == "" && txbMinutos.Text == "" && txbMiliSegundos.Text == "")
          {
              return false;
          }
          if (clServicioComboBox.SelectedItem.ToString() == "") { return false; }

          if (txbMiliSegundos.Text == "") { txbMiliSegundos.Text = "0"; }
          if (txbSegundos.Text == "") { txbSegundos.Text = "0"; }
          if (txbMinutos.Text == "") { txbMinutos.Text = "0"; }
          return true;
        }
    }


}
